package org.dllwh.mongo;

import com.mongodb.MongoException;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoDatabase;

import java.util.ArrayList;
import java.util.List;

/**
 * 把今天最好的表现当作明天最新的起点．．～
 * <p>
 * Today the best performance as tomorrow the newest starter!
 *
 * @ClassName MongoDatabase
 * @Description MongoDB 数据库操作类
 * @Author: <a href="mailto:duleilewuhen@sina.com">独泪了无痕</a>
 * @Date 2025-08-31 01:51
 * @版本 V 1.0.1
 * @since JDK 17
 */
public class MongoDatabaseHelper {

    /**
     * 创建数据库
     *
     * @param databaseName 数据库名称
     */
    public static MongoDatabase createDatabase(String databaseName) throws MongoException {
        MongoClient mongoClient = MongoDBConnect.getMongoClient();
        return mongoClient.getDatabase(databaseName);
    }

    /**
     * 删除数据库
     *
     * @param databaseName 数据库名称
     */
    public static void dropDatabase(String databaseName) throws MongoException{
        MongoClient mongoClient = MongoDBConnect.getMongoClient();
        mongoClient.getDatabase(databaseName).drop();
    }

    /**
     * 获取指定名称的数据库实例。如果数据库不存在，则创建数据库。
     *
     * @param databaseName 数据库名称
     * @return 数据库实例
     */
    public static MongoDatabase selectDatabase(String databaseName) throws MongoException{
        MongoClient mongoClient = MongoDBConnect.getMongoClient();
        return mongoClient.getDatabase(databaseName);

    }

    /**
     * 显示所有数据库
     *
     * @return 数据库名称列表
     */
    public static List<String> showAllDatabase() throws MongoException{
        MongoClient mongoClient = MongoDBConnect.getMongoClient();
        return mongoClient.listDatabaseNames().into(new ArrayList<>());
    }
}